package com.shitou.shitoumember.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.shitou.shitoucommons.utils.PageUtils;
import com.shitou.shitoucommons.utils.RespBean;
import com.shitou.shitoucommons.vo.MessageVo;
import com.shitou.shitoumember.entity.MemberExchangeEntity;

import java.util.List;
import java.util.Map;

/**
 * 关注表
 *
 * @author shitouren
 * @email 3076767823@qq.com
 * @date 2023-04-04 16:23:15
 */
public interface MemberExchangeService extends IService<MemberExchangeEntity> {

    PageUtils queryPage(Map<String, Object> params);


    /**
     * 交流时，将信息存入到数据库
     * @param messageVo
     * @see MessageVo
     * @return
     */
    RespBean createExchange(MessageVo messageVo);


    /**
     * 删除当前会员的所对应的接收者的信息
     * @param memberId 发送者id
     * @param receiveMemberId 接收者id
     * @return
     */
    RespBean deleteExchange(Long memberId, Long receiveMemberId);


    /**
     * 创建离线消息
     * @param messageVo
     * @return
     */
    RespBean createOffLine(MessageVo messageVo);


    /**
     * 通过会员id获取该会员的所有离线消息
     * @param memberId
     * @return
     */
    List<MessageVo> getOffLineMessage(Long memberId);


    /**
     * 获取当前会员和另一个会员的聊天记录
     * @param memberId
     * @param receiveMemberId
     * @return
     */
    RespBean getMemberExchange(Long memberId, Long receiveMemberId);


    /**
     * 获得当前登录会员与之聊天得人得列表
     * @param memberId
     * @return
     */
    RespBean getChatNumber(Long memberId);


    /**
     * 远程调用，构建站内信
     * @param messageVo
     * @return
     */
    RespBean createMessaging(MessageVo messageVo);


    /**
     * 获得登录用户的所有站内信信息
     * @param memberId
     * @return
     */
    RespBean getMessaging(Long memberId);


    /**
     * 统计未读取的站内信数量
     * @param memberId
     * @return
     */
    RespBean messagingCount(Long memberId);


    /**
     * 通过信息的id获取信息，，主要用于读取站内信操作
     * @param messagingId
     * @return
     */
    MessageVo getMessageVoById(Long messagingId, Long memberId);


    /**
     * 删除站内信
     * @param memberId
     * @param messagingId
     * @return
     */
    RespBean deleteMessaging(Long memberId, Long messagingId);
}

